#include<bits/stdc++.h>
using namespace std;
long long t,s=0;
struct A{
    int d,v,a;
};
struct B{
    int s,s0;
};
int main()
{
    freopen("duel.in","r",stdin);
    freopen("duel.out","w",stdout);
    cin>>t;
    struct B ttf[t+5];
    for(int i=0;i<t;i++)
    {
        int n,m,l,V;
        cin>>n>>m>>l>>V;
        struct A cars[n+5];
        for(int i=0;i<n;i++)
            cin>>cars[i].d>>cars[i].v>>cars[i].a;
        int sxt[m+5];
        int ccc[m+5]={0};
        for(int i=0;i<m;i++)
            cin>>sxt[i];
        for(int i=0;i<n;i++)
        {
            int pd=0;
            for(int j=0;j<m;j++)
            {
                if(cars[i].d<sxt[j])
                {

                    if(sqrt(cars[i].v*cars[i].v+2*cars[i].a*(sxt[j]-cars[i].d))>V)
                        {
                            s++;
                            pd=1;
                            ccc[j]++;
                            break;
                            cout<<i;
                        }

                    else
                        continue;
                    if(pd==1)
                        break;
                }
                if(pd==1)
                    break;
            }
        }
        int maxs=0,s0=0;
        for(int i=0;i<m;i++)
            if(maxs<ccc[i])
                maxs=ccc[i];
        for(int i=0;i<m;i++)
            if(ccc[i]<maxs)
                s0++;
        ttf[i].s=s;
        ttf[i].s0=s0;

    }
    for(int i=0;i<t;i++)
        cout<<ttf[i].s<<" "<<ttf[i].s0<<endl;
    fclose(stdin);
    fclose(stdout);
    return 0;
}
